﻿//socket.h
#pragma once

//使用标准库
#include <iostream>
#include <string>
#include <map>

//使用windows的函数
#include <winsock2.h>
#include <windows.h>

//使用windows的网络库
#pragma comment(lib,"ws2_32.lib")

using namespace std;

class CSocket {
private:
	SOCKET m_hSock;
	static int ms_SocketCount;
protected:
	
public:
	CSocket();
	
	CSocket(SOCKET sock);
	
	virtual ~CSocket();
	
	//创建套接字，如果port=0表示为客户端连接
	//否则为服务器连接
	
	void Close();
	
	bool Connect(const char* ip,short port);
	
	bool Listen(const char* ip,short port);
	
	static string getHostIP(const char* host);
	
	int Send(const char* pData, int len);
	
	int Recv(char* pData,int len);
	
	CSocket* Accept(int timeout =5);
	
	bool SetRecvTimeout(int timeout = 5000);
	
	string getClientIP();
};
